<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<script>
			/*
			 * 全面
			 */
			var checkCode = function (val) {
			    var p = /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
			    var factor = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ];
			    var parity = [ 1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2 ];
			    var code = val.substring(17);
	
			    if(p.test(val)) {
			        var sum = 0;
			        for(var i=0;i<17;i++) {
			            sum += val[i]*factor[i];
			        }
			        if(parity[sum % 11] == code.toUpperCase()) {
			            return true;
			        }
			    }
	    		return false;
			}
		console.log(checkID("11010519491231002X"));
		//输出 false，校验码不符
		console.log(checkID("110105194912310021"));
		//输出 false，日期码不符
		console.log(checkID("110105194902310026"));
		//输出 false，地区码不符
		console.log(checkID("160105194912310029"));
		</script>
	</body>
</html>
